package com.zkjl.protect_business.service;

import com.zkjl.protect_business.vo.statistic.*;

import java.util.List;
import java.util.Map;

public interface StatisticService {


    /**
     * 获取敌情社情统计信息
     * @return
     */
    List<EnemySocietyGroupVO> getEnemySocietyStat();


    /**
     * 首页大屏业务分类统计分组信息
     *
     * @return
     */
    List<BusinessStatVO> getBusinessStat(String orgId, Long startTime, Long endTime);


    /**
     * 首页大屏定制业务分类统计分组信息
     * @return
     */
    List<BusinessStatVO> getCustomBusinessStat(Long startTime, Long endTime, String orgId);



    /**
     * 首页大屏单位信息分组统计
     * @return
     */
    List<OrgStatVO> getOrgStat();


    /**
     * 获取时间分组
     * @return
     */
    List<BusinessStatVO> getDateGroup(Long startTime, Long endTime);


    /**
     * 获取业务下的单位分组统计
     * @param businessId
     * @return
     */
    List<OrgStatDateVO> getOrgDateNum(String businessId,Long startTime, Long endTime);

    /**
     * 获取单个业务下面的 列表统计
     *
     * @param businessId
     * @param startTime
     * @param endTime
     * @param fieldName
     * @return
     */
    StatGroupDTO getFieldNameDate(String orgName, String businessId, Long startTime, Long endTime, String fieldName, String timeType);


    /**
     * 获取单个业务下面的 列表统计 带所有条件

     * @return
     */
    StatGroupDTO getFieldNameDate(String businessId, String fieldName, Map<String, Object> param);



    /**
     * 获取单个业务下面的单位 列表统计
     *
     * @param businessId
     * @param startTime
     * @param endTime
     * @param fieldName
     * @return
     */
    StatGroupDTO getOrgDate(String orgName, String businessId, Long startTime, Long endTime, String fieldName, String timeType);


    /**
     * 统计单位分组
     * @param businessId
     * @param startTime
     * @param endTime
     * @return
     */
    List<GroupVO> getOrgGroup(String businessId,Long startTime, Long endTime);


    /**
     * 获取二级业务分组
     * @return
     */
    List<GroupVO> getSecondaryGroup(String businessId);

    /**
     * 获取二级业务时间分组
     * @return
     */
    List<OrgStatDateVO> getSecondaryDateGroup(String businessId);


    /**
     * 首页统计数据
     * @return
     */
    HomePageCountVO getHomePageCount();


}
